home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ┴TARI ┴SSEMBLER ├OURSE
- (EDITED FOR ├OMMODORE)
- -----------------------------------
- 4.1 ╘HE ╙TACK
-
- ╘HE ╙TACK OCCUPIES 256 BYTES OF MEMORY FROM $100 TO $1╞╞ OR ALL OF "PAGE ONE"
- AND IS USED BY BOTH THE PROCESSOR AND THE PROGRAMMER FOR TEMPORARY STORAGE. ╘HE
- STACK IS FILLED FROM ITS TOP ($1╞╞) TO ITS BOTTOM ($100) ON A "LAST-IN,
- FIRST-OUT" BASIS. ╚ERE ARE SOME INSTRUCTIONS THAT UTILIZE THE STACK:
-
-
- 4.1.1 ╩╙╥/╥╘╙ - "╟OSUB/╥ETURN"
-
- ,-----.
- ▄ ╩╙╥ ▄ -- ╩UMP TO ╙UBROUTINE
- '-----'
-
- ,-----.
- ▄ ╥╘╙ ▄ -- ╥ETURN FROM ╙UBROUTINE
- '-----'
-
- ╘HE ╩╙╥ OPERATION IS SIMILAR TO THE ┬┴╙╔├ "╟╧╙╒┬" COMMAND. ╔T ALLOWS A
- PROGRAM TO BE STRUCTURE WITH SUBROUTINES THAT ARE USED REPEATEDLY. ╫HEN A
- SUBROUTINE IS "CALLED", THE 6502 SAVES ITS PRESENT LOCATION IN THE MAIN PROGRAM
- ON THE STACK WITH THE HIGH BYTE FIRST. ╫HEN AN ╥╘╙ IS ENCOUNTERED AT THE END OF
- THE SUBROUTINE, THE 6502 RECOVERS THE RETURN ADDRESS BACK FROM THE STACK AND
- CONTINUES WITH THE MAIN PROGRAM. ╘HIS OPERATION IS IMPORTANT TO REMEMBER IF YOU
- PLAN ON USING THE STACK FOR OTHER PURPOSES.
-
-
- 4.1.2 ╨╠┴/╨╙╚ - "╨ULL/╨USH" ╙TACK
-
- ,-----.
- ▄ ╨╠┴ ▄ -- "╨ULL" ┴CC. FROM ╙TACK
- '-----'
-
- ,-----.
- ▄ ╨╚┴ ▄ -- "╨USH" ┴CC. ON ╙TACK
- '-----'
-
- ╘HE ╨╠┴ INSTRUCTION REMOVES A BYTE FROM THE STACK, SAVES IT IN THE
- ACCUMULATOR, AND MOVES THE STACK-POINTER TO THE PREVIOUS BYTE. ╘HE ╨╚┴ IS THE
- OPPOSITE OF THE ╨╠┴; IT TRANFERS THE ACCUMULATOR TO THE STACK AND POINTS TO THE
- NEXT SPACE ON THE STACK. ╘HESE OPERATIONS ALLOWS THE PROGRAMMER TO USE THE
- STACK FOR TEMPORARY STORAGE OR FOR PASSING PARAMETERS TO SUBROUTINES. ┬UT,
- REMEMBER THAT THE PROCESSOR USES THE STACK TO SAVE THE RETURN ADDRESS FROM A
- SUBROUTINE.
-
-
- 4.1.3 ╘╙╪/╘╪╙ - ╘RANSFER
- ╙TACK-╨OINTER
-
- ,-----.
- ▄ ╘╙╪ ▄ -- ╘RANSFER ╙TACK-╨OINTER
- '-----' TO THE ╪-╥EGISTER
-
- ,-----.
- ▄ ╘╪╙ ▄ -- ╘RANSFER ╪-╥EGISTER TO
- '-----' THE ╙TACK-╨OINTER
-
-
-
-
-
-
- ╔F THE STACK IS USED EXSTENSIVELY, IT MAY FILL COMPLETELY TO THE BOTTOM OF
- PAGE-ONE ($100). ╔N SOME APPLICATIONS, IT MAY BE NECESSARY TO CHECK HOW "FULL"
- THE STACK IS. ╘HE ╘╙╪ OPERATION TRANSFERS THE STACK-POINTER TO THE ╪-REGISTER
- SO THAT THIS CONDITION MAY BE CHECKED. ┴FTER THE ╘╙╪ INSTRUCTION, THE ╪
- REGISTER CONTAINS THE LOCATION WITHIN PAGE-ONE WHERE THE NEXT BYTE WILL GO ON
- THE STACK. ╘HE ╘╪╙ INSTRUCTION CHANGES THE STACK-POINTER TO THE VALUE OF THE
- ╪-REGISTER. ╘HIS IS USED FORCE THE STACK TO POINT TO A CERTAIN LOCATION WITHIN
- PAGE-ONE.
-
-
- 4.2 ╔NDEXED ┴DDRESSING
-
- ╙O FAR, WE HAVE USED "IMMEDIATE" ADDRESSING SUCH AS "╠─┴ #10" TO OPERATE ON
- CONSTANTS, "ABSOLUTE" ADDRESSING SUCH AS "╠─┴ $1000" TO OPERATE ON MEMORY, AND
- "RELATIVE" ADDRESSING LIKE "┬┼╤ ╠╧╧╨" TO CONTROL BRANCHING. ┴NOTHER FORM OF
- ADDRESSING USES THE INDEX REGISTERS, ╪ OR ┘, TO GIVE US A VARIABLE OFFSET INTO
- MEMORY AND, NATURALLY, IT IS CALLED "INDEXED" ADDRESSING. ┬ECAUSE THIS ACTS AS
- AN INDEX INTO A STRING OR ARRAY, IT BECOMES VERY USEFUL IN OUR PROGRAMMING
- STRUCTURES. ╔N THE FOLLWING EXAMPLE, A ┬┴╙╔├ PROGRAM AND ITS ┴SSEMBLY ╠ANGUAGE
- EQUIVALENT ARE SHOWN FOR A SIMPLE STRING ASSIGNMENT AND INDEXING.
-
- 10 ╙1$="┼╪┴═╨╠┼ #1"
- 20 ╙2$=╙1$
- 30 ┴=┴╙├(═╔─$(╙1$,4))
-
-
- 10 *=$4000 ;START AT HEX 4000.
- 20 ╙╘┴╥╘ ╠─╪ #9 ;FOR 0->9...
- 30 ╙╘┴╥╘1 ╠─┴ ╙╘╥╔╬╟1,╪ ;MOVE FROM.
- 40 ╙╘┴ ╙╘╥╔╬╟2,╪ ;MOVE TO.
- 50 ─┼╪ ;FOR EACH CHAR.
- 60 ┬╨╠ ╙╘┴╥╘1 ;UNTIL ╪<0.
- 70 ╠─╪ #3 ;THE 4TH CHAR.
- 80 ╠─┴ ╙╘╥╔╬╟2,╪ ;OF ╙╘╥╔╬╟2
- 90 ┬╥╦ ;BACK TO CARTRIDGE.
- 100 ;THE ┴CC. WILL CONTAIN THE 4TH
- 110 ;CHARACTER OR $4─ FOR ┴╙├("═").
- 120 ;╘HE STRINGS WILL BE SAVED IN
- 130 ;MEMORY RIGHT AFTER THE PROGRAM:
- 140 ╙╘╥╔╬╟1 .┬┘╘┼ "┼╪┴═╨╠┼ #1" ;RESERVE 10 BYTES AND INITIALIZE.
- 150 ╙╘╥╔╬╟2 *=*+10 ;RESERVE 10 BYTES WITHOUT INITIALIZING.
- 160 .┼╬─ ;OPTIONAL END OF PROGRAM.
-
-
- 4.3 ╙OME ┴SSEMBLER "─IRECTIVES"
-
- ╬OTE--DIFFERENT ┴SSEMBLERS HAVE DIFFERENT "DIRECTIVES"--READ YOUR ┴SSEMBLER
- MANUAL TO LEARN ABOUT YOUR DIRECTIVES "─IRECTIVES" ARE INSTRUCTION THAT TELL THE
- ┴SSEMBLER TO DO SOMETHING DURING THE ASSEMBLY OF THE SOURCE CODE TO MACHINE
- CODE. ╘HEY ARE SOMETIMES CALLED "PSEUDO OPS" BECAUSE THEY ARE USED ALONG WITH
- THE NORMAL OP-CODES. ╔N THE ├OMMODORE ┴SSEMBLER, AND IN MANY OTHERS, DIRECTIVES
- ARE IDENTIFIED BY A "." AT THE BEGINNING. ╘HE EXCEPTION IS THE "*=" OR ORIGIN
- DIRECTIVE.
- ═OST OF THE DIRECTIVES EFFECT THE WAY THE LISTING IS FORMATED DURING ASSEMBLY
- TIME AND DON'T GENERATE ANY CODE. ┬UT, AS WE'VE SEEN, OTHERS LIKE THE ".┬┘╘┼"
- DIRECTIVE CAN ACTUALLY GENERATE DATA IN THE PROGRAM. ╥EAD YOUR ┴SSEMBLER/┼DITOR
- MANUAL AND READ SOME PROGRAM LISTINGS TO BECOME FAMILIAR WITH THE USE OF
- DIRECTIVES.
-
-
- ╩OHN ─E═AR 71066,337 EDITED BY ╩OEL ╥UBIN 70007,576 3/29/84
-
-
-
-